/**
 * API 配置和请求工具
 */

// API 基础地址
const BASE_URL = 'http://112.126.82.100:13000/api';

/**
 * 统一请求方法
 */
const request = (options) => {
  return new Promise((resolve, reject) => {
    // 从本地存储获取 token
    const token = uni.getStorageSync('token');
    
    // 构建请求配置
    const requestOptions = {
      url: BASE_URL + options.url,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
        'Content-Type': 'application/json',
        ...(token ? { 'Authorization': `Bearer ${token}` } : {}),
        ...options.header
      },
      success: (res) => {
        if (res.data.code === 200) {
          resolve(res.data);
        } else if (res.data.code === 401 || res.data.code === 403) {
          // Token 过期或无效，清除本地存储，跳转到登录页
          uni.removeStorageSync('token');
          uni.removeStorageSync('userInfo');
          uni.reLaunch({
            url: '/pages/login/login'
          });
          reject(new Error('未登录或登录已过期'));
        } else {
          reject(res.data);
        }
      },
      fail: (err) => {
        console.error('请求失败:', err);
        uni.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        reject(err);
      }
    };
    
    uni.request(requestOptions);
  });
};

/**
 * 用户认证 API
 */
export const authAPI = {
  // 用户注册
  register(data) {
    return request({
      url: '/auth/register',
      method: 'POST',
      data
    });
  },
  
  // 用户登录
  login(data) {
    return request({
      url: '/auth/login',
      method: 'POST',
      data
    });
  },
  
  // 获取用户信息
  getProfile() {
    return request({
      url: '/auth/profile',
      method: 'GET'
    });
  }
};

/**
 * 备忘录 API
 */
export const memoAPI = {
  // 获取备忘录列表
  getList(params) {
    const query = params ? '?' + Object.keys(params).map(key => `${key}=${params[key]}`).join('&') : '';
    return request({
      url: '/memos' + query,
      method: 'GET'
    });
  },
  
  // 获取单个备忘录
  getDetail(id) {
    return request({
      url: `/memos/${id}`,
      method: 'GET'
    });
  },
  
  // 创建备忘录
  create(data) {
    return request({
      url: '/memos',
      method: 'POST',
      data
    });
  },
  
  // 更新备忘录
  update(id, data) {
    return request({
      url: `/memos/${id}`,
      method: 'PUT',
      data
    });
  },
  
  // 标记为完成
  complete(id) {
    return request({
      url: `/memos/${id}/complete`,
      method: 'PATCH'
    });
  },
  
  // 删除备忘录
  delete(id) {
    return request({
      url: `/memos/${id}`,
      method: 'DELETE'
    });
  }
};

/**
 * 统计信息 API
 */
export const statisticsAPI = {
  // 获取基本统计
  getBasic() {
    return request({
      url: '/statistics',
      method: 'GET'
    });
  },
  
  // 获取优先级分布
  getPriority() {
    return request({
      url: '/statistics/priority',
      method: 'GET'
    });
  },
  
  // 获取统计概览
  getOverview() {
    return request({
      url: '/statistics/overview',
      method: 'GET'
    });
  }
};

export default {
  authAPI,
  memoAPI,
  statisticsAPI
};
